package object;
/**
 * equals方法
 * 
 * @author 范传奇
 *
 */
public class Demo2 {
	public static void main(String[] args) {
		String s1 = "hello";
		String s2 = new String("hello");
		System.out.println("s1:"+s1);
		System.out.println("s2:"+s2);
		/*
		 * ==是值比较。对于引用类型变量而言，保存的是地址，因此==成立时说明
		 * 两个引用类型变量保存的地址相同(指向的是同一个对象)。
		 * 
		 * equals方法的作用是比较两个引用类型变量指向的对象的内容是否相同
		 */
		//s1和s2指向的是两个不同的字符串对象，因此地址不同
		System.out.println("s1==s2:"+(s1==s2));//false
		//s1和s2指向的字符串内容都是hello,因此两个字符串对象的内容相同。
		System.out.println("s1 equals s2:" + s1.equals(s2));//true
		
		
		
		Point p1 = new Point(1,2);
		Point p2 = new Point(1,2);
		
		System.out.println("p1==p2:" + (p1==p2));//false
		/*
		 * java提供的类equals方法基本都重写了，比如上面的String类。
		 * 而我们定义的类若不重写则使用Object提供的，那么比较规则就是==,没有
		 * 实际价值。对此我们如果自己定义的类也希望用equals比较内容就需要重写
		 * 这个方法。
		 */
		System.out.println("p1 equals p2:"+p1.equals(p2));//true
	}
}








